package com.fastloan.safe.mgt.org.service;

import com.fastloan.safe.mgt.org.model.CmuOrg;
import com.fastloan.safe.mgt.org.model.vo.OrgTreeVo;
import com.fastloan.safe.mgt.org.model.vo.OrgVo;
import com.fastloan.safe.mgt.user.model.CmuUser;
import com.kawins.base.BaseService;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @author rankai
 *         createTime 2017-09-2017/9/28 11:27
 */
public interface CmuOrgService extends BaseService<CmuOrg> {

    String TOP_ORG_PARENT_ID = "0";

    /**
     * 获得顶级机构分页列表
     *
     * @param map
     * @return
     */
    List<OrgVo> pageList(Map<String, Object> map);

    /**
     * 新增顶级机构
     *
     * @param cmuOrg   机构Bean
     * @param cmuUser  用户信息
     * @param funIds   授权功能IDS
     * @param logoFile
     */
    void insertTopOrg(CmuOrg cmuOrg, CmuUser cmuUser, String[] funIds, MultipartFile logoFile);

    /**
     * 更新顶级机构
     *
     * @param cmuOrg
     * @param funIds
     * @param logoFile
     */
    void updateTopOrg(CmuOrg cmuOrg, String[] funIds, MultipartFile logoFile);

    /**
     * 根据
     *
     * @param userId
     * @return
     */
    String selectOrgByUser(String userId);

    /**
     * 根据子机构获得顶级机构
     *
     * @param orgId
     * @param hasSelf
     * @param onlyTop
     * @return
     */
    List<CmuOrg> selectTopOrgBySon(String orgId, boolean hasSelf, boolean onlyTop);

    /**
     * 根据顶级ID获得所有子集
     *
     * @param orgId
     * @param hasSelf
     * @return
     */
    List<OrgTreeVo> selectSonByTop(String orgId, boolean hasSelf, boolean isTree);

    /**
     * 增加子机构
     *
     * @param cmuOrg
     * @param weixinCode
     * @param logoFile   @return
     */
    boolean insertSonOrg(CmuOrg cmuOrg, MultipartFile weixinCode, MultipartFile logoFile);


    boolean insertSonOrg(CmuOrg cmuOrg, MultipartFile... flies);

    /**
     * 更新子机构
     *
     * @param cmuOrg
     * @param weixinCode
     * @param logoFile   @return
     */
    boolean updateSonOrg(CmuOrg cmuOrg, MultipartFile weixinCode, MultipartFile logoFile, MultipartFile licenseImg );

}
